# SPDX-License-Identifier: GPL-2.0-only
menu "Audio support for Texas Instruments SoCs"
depends on DMA_OMAP || TI_EDMA || TI_K3_UDMA || COMPILE_TEST

config SND_SOC_TI_EDMA_PCM
	tristate
	select SND_SOC_GENERIC_DMAENGINE_PCM

config SND_SOC_TI_SDMA_PCM
	tristate
	select SND_SOC_GENERIC_DMAENGINE_PCM

config SND_SOC_TI_UDMA_PCM
	tristate
	select SND_SOC_GENERIC_DMAENGINE_PCM

comment "Texas Instruments DAI support for:"
config SND_SOC_DAVINCI_ASP
	tristate "daVinci Audio Serial Port (ASP) or McBSP support"
	depends on ARCH_DAVINCI || COMPILE_TEST
	select SND_SOC_TI_EDMA_PCM
	help
	  Say Y or M here if you want audio support via daVinci ASP or McBSP.
	  The driver only implements the ASP support which is a subset of
	  daVinci McBSP (w/o the multichannel support).

config SND_SOC_DAVINCI_MCASP
	tristate "Multichannel Audio Serial Port (McASP) support"
	select SND_SOC_TI_EDMA_PCM
	select SND_SOC_TI_SDMA_PCM
	select SND_SOC_TI_UDMA_PCM
	help
	  Say Y or M here if you want to have support for McASP IP found in
	  various Texas Instruments SoCs like:
	  - daVinci devices
	  - Sitara line of SoCs (AM335x, AM438x, etc)
	  - DRA7x devices
	  - Keystone devices
	  - K3 devices (am654, j721e)

config SND_SOC_DAVINCI_VCIF
	tristate "daVinci Voice Interface (VCIF) support"
	depends on ARCH_DAVINCI || COMPILE_TEST
	select SND_SOC_TI_EDMA_PCM
	help
	  Say Y or M here if you want audio support via daVinci VCIF.

config SND_SOC_OMAP_DMIC
	tristate "Digital Microphone Module (DMIC) support"
	depends on ARCH_OMAP4 || SOC_OMAP5 || COMPILE_TEST
	select SND_SOC_TI_SDMA_PCM
	help
	  Say Y or M here if you want to have support for DMIC IP found in
	  OMAP4 and OMAP5.

config SND_SOC_OMAP_MCBSP
	tristate "Multichannel Buffered Serial Port (McBSP) support"
	depends on ARCH_OMAP || ARCH_OMAP1 || COMPILE_TEST
	select SND_SOC_TI_SDMA_PCM
	help
	  Say Y or M here if you want to have support for McBSP IP found in
	  Texas Instruments OMAP1/2/3/4/5 SoCs.

config SND_SOC_OMAP_MCPDM
	tristate "Multichannel PDM Controller (McPDM) support"
	depends on ARCH_OMAP4 || SOC_OMAP5 || COMPILE_TEST
	select SND_SOC_TI_SDMA_PCM
	help
	  Say Y or M here if you want to have support for McPDM IP found in
	  OMAP4 and OMAP5.

comment "Audio support for boards with Texas Instruments SoCs"
config SND_SOC_NOKIA_N810
	tristate "SoC Audio support for Nokia N810"
	depends on MACH_NOKIA_N810 && I2C
	select SND_SOC_OMAP_MCBSP
	select SND_SOC_TLV320AIC3X
	help
	  Say Y or M if you want to add support for SoC audio on Nokia N810.

config SND_SOC_NOKIA_RX51
	tristate "SoC Audio support for Nokia RX-51"
	depends on ARCH_OMAP3 && I2C && GPIOLIB
	select SND_SOC_OMAP_MCBSP
	select SND_SOC_TLV320AIC3X
	select SND_SOC_TPA6130A2
	help
	  Say Y or M if you want to add support for SoC audio on Nokia RX-51
	  hardware. This is also known as Nokia N900 product.

config SND_SOC_OMAP3_PANDORA
	tristate "SoC Audio support for OMAP3 Pandora"
	depends on ARCH_OMAP3
	depends on TWL4030_CORE
	select SND_SOC_OMAP_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y or M if you want to add support for SoC audio on the OMAP3 Pandora.

config SND_SOC_OMAP3_TWL4030
	tristate "SoC Audio support for OMAP3 based boards with twl4030 codec"
	depends on ARCH_OMAP3 || COMPILE_TEST
	depends on TWL4030_CORE
	select SND_SOC_OMAP_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y or M if you want to add support for SoC audio on OMAP3 based
	  boards using twl4030 as codec. This driver currently supports:
	  - Beagleboard or Devkit8000
	  - Gumstix Overo or CompuLab CM-T35/CM-T3730
	  - IGEP v2
	  - OMAP3EVM
	  - SDP3430
	  - Zoom2

config SND_SOC_OMAP_ABE_TWL6040
	tristate "SoC Audio support for OMAP boards using ABE and twl6040 codec"
	depends on TWL6040_CORE && COMMON_CLK
	depends on ARCH_OMAP4 || (SOC_OMAP5 && MFD_PALMAS) || COMPILE_TEST
	select SND_SOC_OMAP_DMIC
	select SND_SOC_OMAP_MCPDM
	select SND_SOC_TWL6040
	help
	  Say Y or M if you want to add support for SoC audio on OMAP boards
	  using ABE and twl6040 codec. This driver currently supports:
	  - SDP4430/Blaze boards
	  - PandaBoard (4430)
	  - PandaBoardES (4460)
	  - OMAP5 uEVM

config SND_SOC_OMAP_AMS_DELTA
	tristate "SoC Audio support for Amstrad E3 (Delta) videophone"
	depends on MACH_AMS_DELTA && TTY
	select SND_SOC_OMAP_MCBSP
	select SND_SOC_CX20442
	help
	  Say Y  or M if you want to add support  for SoC audio device
	  connected to a handset and a speakerphone found on Amstrad E3 (Delta)
	  videophone.

	  Note that in order to get those devices fully supported,  you have to
	  build  the kernel  with  standard  serial port  driver  included  and
	  configured for at least 4 ports.  Then, from userspace, you must load
	  a line discipline #19 on the modem (ttyS3) serial line.  The simplest
	  way to achieve this is to install util-linux-ng  and use the included
	  ldattach  utility.  This  can be  started  automatically  from  udev,
	  a simple rule like this one should do the trick (it does for me):
		ACTION=="add", KERNEL=="controlC0", \
				RUN+="/usr/sbin/ldattach 19 /dev/ttyS3"

config SND_SOC_OMAP_HDMI
	tristate "OMAP4/5 HDMI audio support"
	depends on OMAP4_DSS_HDMI || OMAP5_DSS_HDMI || COMPILE_TEST
	select SND_SOC_TI_SDMA_PCM
	help
	  For HDMI audio to work OMAPDSS HDMI support should be
	  enabled.
	  The hdmi audio driver implements cpu-dai component using the
	  callbacks provided by OMAPDSS and registers the component
	  under DSS HDMI device. Omap-pcm is registered for platform
	  component also under DSS HDMI device. Dummy codec is used as
	  as codec component. The hdmi audio driver implements also
	  the card and registers it under its own platform device.
	  The device for the driver is registered by OMAPDSS hdmi
	  driver.

config SND_SOC_OMAP_OSK5912
	tristate "SoC Audio support for omap osk5912"
	depends on MACH_OMAP_OSK && I2C
	select SND_SOC_OMAP_MCBSP
	select SND_SOC_TLV320AIC23_I2C
	help
	  Say Y or M if you want to add support for SoC audio on osk5912.

config SND_SOC_DAVINCI_EVM
	tristate "SoC Audio support for DaVinci EVMs"
	depends on ARCH_DAVINCI && I2C
	select SND_SOC_DAVINCI_ASP if MACH_DAVINCI_DM355_EVM
	select SND_SOC_DAVINCI_ASP if SND_SOC_DM365_AIC3X_CODEC
	select SND_SOC_DAVINCI_VCIF if SND_SOC_DM365_VOICE_CODEC
	select SND_SOC_DAVINCI_ASP if MACH_DAVINCI_EVM # DM6446
	select SND_SOC_DAVINCI_MCASP if MACH_DAVINCI_DM6467_EVM
	select SND_SOC_SPDIF if MACH_DAVINCI_DM6467_EVM
	select SND_SOC_DAVINCI_MCASP if MACH_DAVINCI_DA830_EVM
	select SND_SOC_DAVINCI_MCASP if MACH_DAVINCI_DA850_EVM
	select SND_SOC_TLV320AIC3X
	help
	  Say Y if you want to add support for SoC audio on the following TI
	  DaVinci EVM platforms:
	  - DM355
	  - DM365
	  - DM6446
	  - DM6447
	  - DM830
	  - DM850

choice
	prompt "DM365 codec select"
	depends on SND_SOC_DAVINCI_EVM
	depends on MACH_DAVINCI_DM365_EVM

config SND_SOC_DM365_AIC3X_CODEC
	bool "Audio Codec - AIC3101"
	help
	  Say Y if you want to add support for AIC3101 audio codec

config SND_SOC_DM365_VOICE_CODEC
	bool "Voice Codec - CQ93VC"
	help
	  Say Y if you want to add support for SoC On-chip voice codec
endchoice

config SND_SOC_DM365_VOICE_CODEC_MODULE
	def_tristate y
	depends on SND_SOC_DM365_VOICE_CODEC && SND_SOC
	select MFD_DAVINCI_VOICECODEC
	select SND_SOC_CQ0093VC
	help
	  The is an internal symbol needed to ensure that the codec
	  and MFD driver can be built as loadable modules if necessary.

config SND_SOC_J721E_EVM
	tristate "SoC Audio support for j721e EVM"
	depends on ARCH_K3_J721E_SOC || COMPILE_TEST
	depends on I2C
	select SND_SOC_PCM3168A_I2C
	select SND_SOC_DAVINCI_MCASP
	help
	  Say Y if you want to add support for SoC audio on j721e Common
	  Processor Board and Infotainment expansion board.
endmenu

